Kinesis Agent for Windowsで ログファイルをS3 に送信してみた。
概要
Amazon Kinesis Agent とは
Amazon Kinesis Agent for Windows はログとイベントおよびメトリクスを収集、変換、ストリーム配信します。 Kinesis AgentをEC2 Windowsインスタンスにインストールすることができます。
Kinesis Agentは次のサービスにストリーミングできます。
- Kinesis Data Firehose
- CloudWatch
- Kinesis Data Streams
この記事では、Kinesis AgentをEC2 Windowsインスタンスにインストールして、Kinesis Data Firehoseで JSON ログファイルをS3 に送信してみました。
やってみた
S3 バケットの作成
- S3 コンソールで、Create bucketを選択します。
- バケット名を入力して、S3バケットを作成しておきます。
Kinesis Data Firehose Deliveryストリームの作成
IAM ロールの作成
- IAM コンソールで、ポリシー名を入力して、次のポリシーを作成しておきます。
- このポリシーにより、Kinesis FirehoseがS3バケットにアクセスできるようになります。
- このポリシーには、以前に作成したS3バケットの名前を入力します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::kinesis-to-s3-windows", "arn:aws:s3:::kinesis-to-s3-windows/*" ] } ] }
- この設定でIAMロールを作成しておきます。
- 信頼されたエンティティの種類 : AWS のサービス
- ユースケース : Kinesis Data Firehose
- ポリシー : 前の手順で作成したポリシーの名前
Deliveryストリームの作成
- Kinesis Data Firehoseのコンソールで、Create Delivery Streamを選択します。
- SourceでDirect PUTを選択して、 DestinationでAmason S3を選択して、Deliveryストリーム名入力しておきます。
- Destination設定で以前に作成したS3バケットURLの名前を入力します。
- Buffer intervalを60Secondsに設定しておきます。
- Permissionsで前の手順で作成しIAMロールの名前を選択して、Deliveryストリームを作成しておきます。
EC2 インスタンスの作成
IAM ロールの作成
- IAM コンソールで、ポリシー名を入力して、次のポリシーを作成しておきます。
- このポリシーには、以前に作成したDelivery ストリームのARNを入力します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:us-east-1:account-id:deliverystream/stream-logs" } ] }
- この設定でIAMロールを作成しておきます。
- 信頼されたエンティティの種類 : AWS のサービス
- ユースケース : EC2
- ポリシー : 前の手順で作成したポリシーの名前
EC2 Windows インスタンスの作成
- この設定でEC2 Windows インスタンスを作成しておきます。
- AMI : Microsoft Windows Server 2019
- インスタンスタイプ : t2.micro
- IAMロール : 前の手順で作成したIAMロール
- Security Group : Inbound - RDP
Kinesis Agentの作成
- RDPを使用してEC2インスタンスに接続しておきます。
- PowerShellを開き、次のコマンドを実行して、Kinesisエージェントの最新バージョンをインストールします。
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://s3-us-west-2.amazonaws.com/kinesis-agent-windows/downloads/InstallKinesisAgent.ps1'))
- C:\LogFiles\ディレクトリを作成して、このディレクトリにJSON Formatのログファイル[JsonLogs.log]を作成しておきます。
- 次のコードでConfigurationファイルを作成して、Program Files\Amazon\AWSKinesisTap\appsettings.jsonにファイルを保存しておきます。
{ "Sources": [ { "Id": "JsonLogFile", "SourceType": "DirectorySource", "RecordParser": "SingleLineJson", "Directory": "C:\\LogFiles\\", "FileNameFilter": "*.log", "InitialPosition": 0 } ], "Sinks": [ { "Id": "Firehose", "SinkType": "KinesisFirehose", "StreamName": "stream-logs", "Region": "us-east-1", "Format": "json" } ], "Pipes": [ { "Id": "StreamLogs", "SourceRef": "JsonLogFile", "SinkRef": "Firehose" } ] }
- 次のコマンドでKinesisエージェントを起動しておきます。
Start-Service -Name AWSKinesisTap
- 次のコマンドでKinesisエージェントのステータスを確認できます。
Get-Service -Name AWSKinesisTap
- S3バケットでログファイルを見ることができます。
- 次のコマンドでKinesisエージェントを停止できます。
Stop-Service -Name AWSKinesisTap
まとめ
Kinesis Agent for Windowsで JSONログファイルをS3 に送信してみました。
Reference :